class DataHelper{
  dataKey:string;
  primaryKey:string;
 //const dh=new DataHelper('传出的参数','传入的参数')
  constructor(dataKey:string,primaryKey:string){
    this.dataKey=dataKey;
    this.primaryKey=primaryKey
  }

  //读取全部的数据,(如果读取到了就返回数组,读不到就返回空数组)
  readData():any{
    let strData:string|null=localStorage.getItem(this.dataKey)
    //将读取到json数组字符串 转换成json对象返回
    let arrData:any=[]
    if (strData!=null) {
      arrData=JSON.parse(strData)
    }
    return arrData
  }

  //保存数据
  saveData(arrData:Array<Object>):void{
    localStorage.setItem(this.dataKey,JSON.stringify(arrData))
  }

  //新增数据对象的方法
  addData(conStr:string):number{
    //1.先读取本地所有数据
    let arr:any=this.readData()
    //2.创建一个评论对象
    let obj:any={
      content:conStr,
    }
    //obj.id=1
    //obj['id']=1
    //obj[this.primaryKey]=1
    
    //3.创建一个评论对象,要先把之前的评论对象取出来看看其id值,如果为空就为1,如果不为空就在上一个基础上加1
    //3.1生成主键id
    let newId=arr.length>0?arr[arr.length-1][this.primaryKey]+1:1;

    obj[this.primaryKey]=newId
    //4.将添加主键值的对象追加到数组
    arr.push(obj)
    this.saveData(arr)
    return newId
  }
 //删除方法根据id,本地评论删除哪条先得到id 
  removeDataById(id:string|number):boolean{
    //1.读取本地数据,转换城数组
    let arr=this.readData()
    //2.根据id找到要删除的(找不到返回-1,找到返回下标)
    let index=arr.findIndex((ele:any)=>{
      return ele[this.primaryKey]==id
    })
    //3.调用splice方法删除对象
    if (index>-1) {
      arr.splice(index,1)
      //4.转数组为字符串,保存
      this.saveData(arr)
      //5.返回删除状态
      return true
    }
    return false
  }
}